package com.yequan.redis;

import redis.clients.jedis.Jedis;

public class LoginRedis {

    /**
     * 登录信息前缀
     */
    private String LOGIN_PREFIX = "login:";

    /**
     * 最近登录的用户
     */
    private String RECENT_LOGIN = "recent:";

    /**
     * 浏览的商品
     */
    private String VIEWED = "viewed:";

    /**
     * 校验是否已登录,如果redis中有token对应的user信息则表示已经登录,否则表示没有登录
     *
     * @param conn
     * @param token
     * @return
     */
    public String checkToken(Jedis conn, String token) {
        return conn.hget(LOGIN_PREFIX, token);
    }

    public void updateToken(Jedis conn, String token, String user, String item) {
        long timeStamp = System.currentTimeMillis() / 1000;
        //更新登录信息
        conn.hset(LOGIN_PREFIX, token, user);
        //添加最近登录信息
        conn.zadd(RECENT_LOGIN, timeStamp, token);
        if (item != null) {
            //将最近浏览过的商品item添加进有序集合中
            conn.zadd(VIEWED + token, timeStamp, item);
            //将最近浏览过的商品有序集合中超出25的商品移除出集合中
            conn.zremrangeByScore(VIEWED + token, 0, -26);
            //将item商品从被浏览过的有序集合中计数减一
            conn.zincrby(VIEWED, -1, item); 
        }
    }

}
